home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
60750
/
60750.xpi
/
chrome
/
chromeFiles
/
content
/
btUtilities.js
< prev
next >
Wrap
Text File
|
2010-01-20
|
37KB
|
981 lines
/* This filech contains helper functions */
/* It has to be included AFTER btClient.js */
BrandThunder.initialize = function(brandObject) {
var AMO = false;
var prefbranch=Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
prefbranch.QueryInterface(Components.interfaces.nsIPrefBranch2);
var btPrefBranch = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService)
.getBranch("extensions.brandthunder.");
var searchSvc = Components.classes["@mozilla.org/browser/search-service;1"]
.getService(Components.interfaces.nsIBrowserSearchService);
if (!brandObject.utilities) {
brandObject.utilities = {};
}
function log(string) {
var aConsoleService = Components.classes["@mozilla.org/consoleservice;1"]
.getService(Components.interfaces.nsIConsoleService);
aConsoleService.logStringMessage(string);
}
function openLink(brandObject, event, url) {
var tab = getBrowser().addTab(url);
getBrowser().selectedTab = tab;
return;
}
function restartApp() {
// Notify all windows that an application quit has been requested.
var os = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
.createInstance(Components.interfaces.nsISupportsPRBool);
os.notifyObservers(cancelQuit, "quit-application-requested", "restart");
// Something aborted the quit process.
if (cancelQuit.data)
return;
var nsIAppStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]
.getService(Components.interfaces.nsIAppStartup);
nsIAppStartup.quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);
}
/* check to see if we should prompt for bing upgrade */
function upgradeToBing(btClientBundle) {
if (searchSvc.currentEngine.description == "Yahoo - BT") {
return;
}
if (searchSvc.currentEngine.description == "Yahoo! - BT") {
return;
}
if (searchSvc.currentEngine.description == "Ask - BT") {
return;
}
if (searchSvc.currentEngine.description == "Bing - BT") {
return;
}
if (searchSvc.currentEngine.name == "Bing") {
setDefaultSearchEngine(brandObject, true);
return;
}
function bingPrompt() {
btPrefBranch.setBoolPref("offeredBing", true);
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
var state = {};
state.value = true;
promptService.confirmEx(window, btClientBundle.getString("clientName"),
btClientBundle.getString("bing.upgrade.message"),
promptService.BUTTON_TITLE_OK,
null,null,null,btClientBundle.getString("bing.upgrade.checkbox"),state);
if (state.value == true) {
setDefaultSearchEngine(brandObject, true);
}
}
window.setTimeout(bingPrompt, 0);
}
/* This function changes Yahoo from BT Yahoo back to regular yahoo */
function replaceYahoo() {
var offeredBing = false;
try {
offeredBing = btPrefBranch.getBoolPref("offeredBing");
if (offeredBing) {
return false;
}
} catch (ex) {
}
var oldPosition;
var oldEngine;
var visibleEngines = searchSvc.getVisibleEngines({});
var defaultEngine = false;
for (let i=0; i < visibleEngines.length; i++) {
if ((visibleEngines[i].name == "Yahoo!") &&
(visibleEngines[i].description == "Yahoo! - BT")) {
oldPosition = i;
oldEngine = visibleEngines[i];
break;
}
}
/* if we didn't find our Yahoo, bail */
if (!oldEngine) {
/* There's a possibility our Yahoo never got added in the first place */
/* As a fallback, check to see if bing is there */
var bingEngine = searchSvc.getEngineByName("Bing");
if (!bingEngine) {
return true;
}
return false;
}
if (oldEngine == searchSvc.currentEngine) {
defaultEngine = true;
}
searchSvc.removeEngine(oldEngine);
searchSvc.addEngineWithDetails("Yahoo!", "data:image/x-icon;base64,R0lGODlhEAAQAJECAP8AAAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIplI+py+0NogQuyBDEnEd2kHkfFWUamEzmpZSfmaIHPHrRguUm/fT+UwAAOw==",
"", "Yahoo - BT", "GET",
"http://search.yahoo.com/search?ei=utf-8&p={searchTerms}");
var newEngine = searchSvc.getEngineByName("Yahoo!");
searchSvc.moveEngine(newEngine, oldPosition);
if (defaultEngine) {
searchSvc.currentEngine = newEngine;
}
return true;
}
/* If replace is set, this function replaces an existing Ask with a new code */
function addAsk(brandObject, firstrun) {
var oldPosition;
var oldEngine;
var visibleEngines = searchSvc.getVisibleEngines({});
var defaultEngine = false;
for (let i=0; i < visibleEngines.length; i++) {
if (visibleEngines[i].name == "Ask") {
oldPosition = i;
oldEngine = visibleEngines[i];
break;
}
}
/* Don't add an engine unless we are firstrun */
if (!oldEngine && !firstrun) {
return undefined;
}
if (oldEngine == searchSvc.currentEngine) {
defaultEngine = true;
}
if (oldEngine) {
searchSvc.removeEngine(oldEngine);
}
searchSvc.addEngineWithDetails("Ask", "data:image/x-icon;base64,AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAEAAAAAAACbm5sAAADJAAAA1gAAANMAAADYAAAAyACcnJ0AAADLAAEBywDCwsAAjIy2AH9/gwBdXa4AAAC5AAAAygAwMOEAMjLgADMzvQAEBHwAaGipAAAAzwCtsLEAhYWgAAsLygDq6toAQkK3AGZnigA5O84ACAiuANjY3wAICIsAAADAAGVljgAEBIQAAADfAGNiegAREZAAwsLzAAcHkwAEBZ0Ag4jOAC0twAALC7QAqK7dAKSq1wBycqQABATQAPT04ACYm74ARkaOALO09wAmJnQAJSXJADw9fwAzNc4ALzDCAHp6pACdnZkApKevAL29sQD5+foAkpKcAOzs4AAMDMoAPj7iAKGinACvr6oAT0/wAAwNyQAAANIAlJTaAN/f0QCcnZ0AAADRAF5erQAAAJ8AAADDAAAAzAA1NrwAMTGfAAkJ1QAAAMQAWlqvAHJ31wDMzMAAFhbHAAAAiQBERNIA8fHmAAgI1gCys6oAu7v4AD09ngDDwfoABgbOAM7N9wCYmPUAKyuOABkZmgAyMsEAiYq8AHp68gDDw5sAAgLPALW2rwCdnZgAAAC9AAMD1wCenpgA9fX1AAAArQCCgrIA0dLYAK+vnwB3e9kA5ubSAOfn+AClp6cA3NzDAMHHygBQU9MABATCAG5z2gAcHMQAio/aAAAA2QD19fwAnaHIAIaGogDm5uoAk5N0AK+ytAAMDNUAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////////////////+DBgAAAAAASBX///////8GEzQ/Ll5VEUo9aXX///86e08hAg1qUUUiaymAOXf/NxQlglZvIzgzHksFeQxs/xcBEG1aWC1lc2YgCmEEUkE2BwFdaHAkQ3RGRxgqAmcWKwgFD1Q7Yn4xYzx2En0DGf9TBwFbLyZgCVwdQgtuBE7//3xEQD4nA1BZgTVXHwIw/////3pkHEkOTV8aTIR//////////yxyeBsycSj/////////////////////////////////////////////////AAD//wAA//8AAMAfAACABwAAAAEAAAABAAAAAAAAAAAAAAAAAACAAAAAwAAAAPABAAD8BwAA//8AAP//AAA=",
"", "Ask - BT", "GET",
"http://www.ask.com/web?q={searchTerms}&o=" + brandObject.askOriginCode + "&l=dis");
var newEngine = searchSvc.getEngineByName("Ask");
if (oldPosition != undefined) {
searchSvc.moveEngine(newEngine, oldPosition);
if (defaultEngine) {
searchSvc.currentEngine = newEngine;
}
}
return newEngine;
}
/* If replace is set, this function replaces an existing Bing with a new code */
function addBing(brandObject, firstrun) {
var oldPosition;
var oldEngine;
var visibleEngines = searchSvc.getVisibleEngines({});
var defaultEngine = false;
for (let i=0; i < visibleEngines.length; i++) {
if (visibleEngines[i].name == "Bing") {
oldPosition = i;
oldEngine = visibleEngines[i];
break;
}
}
/* Don't add an engine unless we are firstrun */
if (!oldEngine && !firstrun) {
return undefined;
}
if (oldEngine == searchSvc.currentEngine) {
defaultEngine = true;
}
if (oldEngine) {
searchSvc.removeEngine(oldEngine);
}
searchSvc.addEngineWithDetails("Bing", "data:image/x-icon;base64," +
"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABmElEQVR4nK2TvS8DcRzGP3dV6Utw" +
"baNLm7hBY0A0BgaDW8/U3YDJVDHaXOIvEKOBRWJk0VENJN1Qg4R4iw4q5Wj6EnJ+hrtrcppIpL7j" +
"7+V5nu/zfb6SEIJOSiJ7IQC0VJjDrCr9FUDuiP4/ALp+HpyVmmLvvMppqYHZ+AJACcqkE0G0VIjp" +
"wbCnzZYHatQPwN3L56+MatSPMRNnbkKRPABu9QVlDD1OZrQHNdZtg1Y+yF/XMHLP3DsE85MKW7MJ" +
"yQMwlgiQz6ooIR+8XsBjzr5I6hAZwaxbaBt3nJWaABh63KvgdjVls97sQmHJq318DYYWMesWkZVL" +
"xxufdwquZG5325t31CghH9ODIQDMhoXsmuf2CkB8qh1AGbE/1S2OruutY8k4KAsjV2734OkYyif2" +
"q8gwJGcAyGw+sF+sArCsxZCEECzslMR2wQRgIOrH0PvJjPbaQA7rXvHdMwU3+pK7TOv5ijByz5gN" +
"y6O8Lyjz5gTKNW5Zi7Gq99s5+LmN+8WqyF/VOHVG5VY6ESCdDLQC1PKg03X+BvY0nUiiaSr8AAAA" +
"AElFTkSuQmCC",
"", "Bing - BT", "GET",
"http://www.bing.com/search?q={searchTerms}&PC=BRTH&FORM=" + brandObject.bingFormCode);
var newEngine = searchSvc.getEngineByName("Bing");
if (oldPosition != undefined) {
searchSvc.moveEngine(newEngine, oldPosition);
if (defaultEngine) {
searchSvc.currentEngine = newEngine;
}
}
return newEngine;
}
/* This functions updates the BT Search Engines with the current boom info */
function updateKeywordSearch(brandObject) {
/* keyword.URL */
var keywordSearch = true;
try {
keywordSearch = btPrefBranch.getBoolPref("keywordSearch");
} catch (ex) {}
if (keywordSearch) {
var currentEngineDescription = searchSvc.currentEngine.description;
if ((currentEngineDescription != "Ask - BT") &&
(currentEngineDescription != "Bing - BT")) {
currentEngineDescription = brandObject.defaultSearchEngine;
}
switch (currentEngineDescription) {
case "Ask - BT":
prefbranch.setCharPref("keyword.URL", "http://www.ask.com/web?o=" + brandObject.askOriginCode + "&l=dis&q=");
break;
case "Bing - BT":
prefbranch.setCharPref("keyword.URL", "http://www.bing.com/search?PC=BRTH&FORM=" + brandObject.bingFormCode + "&q=");
break;
}
}
}
/* This functions updates the BT Search Engines with the current boom info */
function updateSearchEngine(brandObject) {
var currentEngine = searchSvc.currentEngine;
if (brandObject.askOriginCode) {
addAsk(brandObject, false)
}
if (brandObject.bingFormCode) {
addBing(brandObject, false)
}
updateKeywordSearch(brandObject);
}
/* This function checks to see if the default engine is the same as THIS BOOM! */
function isDefaultSearchEngineBT(brandObject) {
var searchSvc = Components.classes["@mozilla.org/browser/search-service;1"]
.getService(Components.interfaces.nsIBrowserSearchService);
var currentEngine = searchSvc.currentEngine;
if (currentEngine.description == brandObject.defaultSearchEngine) {
return true;
}
return false;
}
/* optin indicates whether someone chose to do this or not */
function setDefaultSearchEngine(brandObject, optin) {
/* This assumes we've already added engines */
var searchSvc = Components.classes["@mozilla.org/browser/search-service;1"]
.getService(Components.interfaces.nsIBrowserSearchService);
var currentEngine = searchSvc.currentEngine.description;
var keywordSearch = true;
try {
keywordSearch = btPrefBranch.getBoolPref("keywordSearch");
} catch (ex) {}
var newEngine;
switch (brandObject.defaultSearchEngine) {
case "Ask - BT":
var engine = searchSvc.getEngineByName("Ask");
if (engine.description == "Ask - BT") {
newEngine = engine;
}
if (keywordSearch) {
prefbranch.setCharPref("keyword.URL", "http://www.ask.com/web?o=" + brandObject.askOriginCode + "&l=dis&q=");
}
break;
case "Bing - BT":
newEngine = searchSvc.getEngineByName("Bing");
if (keywordSearch) {
prefbranch.setCharPref("keyword.URL", "http://www.bing.com/search?PC=BRTH&FORM=" + brandObject.bingFormCode + "&q=");
}
break;
}
if (optin && !newEngine) {
/* We got here because there was optin, but we didn't add an engine because */
/* we couldn't step into a revenue connection. Because they opted in, we can */
switch (brandObject.defaultSearchEngine) {
case "Ask - BT":
newEngine = addAsk(brandObject, true);
break;
case "Bing - BT":
newEngine = addBing(brandObject, true);
break;
}
}
if (newEngine) {
searchSvc.currentEngine = newEngine;
}
btPrefBranch.setBoolPref("keywordSearch", true);
btPrefBranch.setBoolPref("tabSearch", true);
}
function addSearchEngine(brandObject) {
var searchSvc = Components.classes["@mozilla.org/browser/search-service;1"]
.getService(Components.interfaces.nsIBrowserSearchService);
var selectedEngine;
try {
selectedEngineName = prefbranch.getCharPref("browser.search.selectedEngine");
} catch (ex) {
selectedEngineName = searchSvc.currentEngine.name;
}
selectedEngine = searchSvc.getEngineByName(selectedEngineName);
var addedAsk = false;
if (brandObject.askOriginCode) {
var askPosition;
/* If they don't have an Ask, add it */
var askEngine = searchSvc.getEngineByName("Ask");
/* We only add our Ask if there is no other Ask */
if (!askEngine) {
addAsk(brandObject, true);
addedAsk = true;
}
}
var addedBing = !!addBing(brandObject, true);
/* Bail if it is an AMO build */
if (AMO) {
if (searchSvc.currentEngine.description == "Bing - BT") {
/* Edge case - AMO install with Bing as default, set keyword and tab prefs */
btPrefBranch.setBoolPref("keywordSearch", true);
btPrefBranch.setBoolPref("tabSearch", true);
}
return;
}
var yahooEngine;
var newAskEngine;
var newBingEngine;
yahooEngine = searchSvc.getEngineByName("Yahoo");
if (addedAsk) {
newAskEngine = searchSvc.getEngineByName("Ask");
}
if (addedBing) {
newBingEngine = searchSvc.getEngineByName("Bing");
}
switch (brandObject.defaultSearchEngine) {
case "Ask - BT":
if (newBingEngine) {
searchSvc.moveEngine(newBingEngine, 0);
}
if (yahooEngine) {
try {
searchSvc.moveEngine(yahooEngine, 0);
} catch(ex) {
/* Might fail if Yahoo is hidden - just ignore */
}
}
if (newAskEngine) {
searchSvc.moveEngine(newAskEngine, 0);
}
break;
case "Bing - BT":
if (newAskEngine) {
searchSvc.moveEngine(newAskEngine, 0);
}
try {
searchSvc.moveEngine(yahooEngine, 0);
} catch(ex) {
/* Might fail if Yahoo is hidden - just ignore */
}
if (newBingEngine) {
searchSvc.moveEngine(newBingEngine, 0);
}
break;
}
}
function addBookmark(title, url, container) {
if (!container) {
container = bookmarks.bookmarksMenuFolder;
}
var bookmarks = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"]
.getService(Components.interfaces.nsINavBookmarksService);
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var uri = ioService.newURI(url, null, null);
bookmarks.insertBookmark(container, uri, -1, title);
}
function toggleTheme(brandObject) {
if (prefbranch.getCharPref("general.skins.selectedSkin") != "classic/1.0") {
return;
}
var currentBoom = btPrefBranch.getCharPref("currentBoom");
var bigBoom = true;
try {
bigBoom = btPrefBranch.getBoolPref("bigBoom");
} catch (ex) {
}
if (bigBoom) {
var boomClient;
for (let i in BrandThunder.clients) {
for (let j in BrandThunder.clients[i].booms) {
if (j == currentBoom) {
boomClient = i;
break;
}
}
}
if (brandObject && (boomClient != brandObject.shortName)) {
return;
}
if (brandObject.utilities.LightweightThemeManager) {
if (brandObject.utilities.LightweightThemeManager.currentTheme) {
brandObject.utilities.LightweightThemeManager.currentTheme = null;
}
}
document.getElementById("main-window").setAttribute("btBoom", currentBoom);
document.getElementById("main-window").setAttribute("bt-theme", currentBoom);
document.getElementById("main-window").setAttribute("btClient", boomClient);
/* If we have a home page, set it, otherwise remove attribute if it is there */
if (brandObject.homePage) {
var homePage;
if (typeof(brandObject.homePage) == "object") {
homePage = brandObject.homePage[currentBoom];
} else {
homePage = brandObject.homePage;
}
document.getElementById("main-window").setAttribute("btURLLeft", homePage);
} else {
document.getElementById("main-window").removeAttribute("btURLLeft");
}
} else {
document.getElementById("main-window").removeAttribute("btBoom");
document.getElementById("main-window").removeAttribute("bt-theme");
document.getElementById("main-window").removeAttribute("btClient");
/* Remove URLs from main window when we are switched to small boom */
document.getElementById("main-window").removeAttribute("btURLLeft");
document.getElementById("main-window").removeAttribute("btURLRight");
}
}
function switchBoom(brandObject, boomSwitch) {
/* Get the current boom */
var currentBoom = btPrefBranch.getCharPref("currentBoom");
/* Find the client that corresponds to the current boom */
var boomClient;
for (let i in BrandThunder.clients) {
for (let j in BrandThunder.clients[i].booms) {
if (j == currentBoom) {
boomClient = i;
break;
}
}
}
/* If we didn't find a boomClient, must be invalid currentBoom */
/* Set currentBoom and return. We'll come back through this code again */
if (!boomClient) {
for (let i in brandObject.booms) {
btPrefBranch.setCharPref("currentBoom", i);
return;
}
} else {
if (boomClient != brandObject.shortName) {
return;
}
}
/* If boomSwitch is set, this came as the result of the pref change */
/* Set the pref and let the big boom come through toggleTheme as a */
/* result of the pref change. Otherwise, call toggleTheme directly */
var bigBoom= true;
try {
bigBoom = btPrefBranch.getBoolPref("bigBoom");
} catch (ex) {
}
if (!bigBoom && boomSwitch) {
btPrefBranch.setBoolPref("bigBoom", true);
} else {
toggleTheme(brandObject);
}
/* Figure out which toolbar applies to the current boom */
/* Note this can be either a boom specific toolbar or a client specific toolbar */
var toolbarRDF;
var boomToolbar;
var toolbar = document.getElementById("bt-" + currentBoom + "-toolbar");
if (toolbar) {
boomToolbar = currentBoom;
toolbarRDF = "chrome://browser/content/browser.xul#bt-" + currentBoom + "-toolbar";
} else {
/* Might be a client toolbar */
toolbar = document.getElementById("bt-" + boomClient + "-toolbar");
if (toolbar) {
boomToolbar = boomClient;
toolbarRDF = "chrome://browser/content/browser.xul#bt-" + boomClient + "-toolbar";
}
}
/* If we have a toolbar, show it */
if (toolbar) {
/* Honor user's collapsed settings */
try {
var rdf = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var dataSource = rdf.GetDataSource("rdf:local-store");
var collapsedResource = rdf.GetResource("collapsed");
toolbarRDF = rdf.GetResource(toolbarRDF);
var target = dataSource.GetTarget(toolbarRDF, collapsedResource, true);
if (target instanceof Components.interfaces.nsIRDFLiteral) {
if (target.Value == "true") {
toolbar.collapsed = true;
} else {
toolbar.collapsed = false;
}
} else {
toolbar.collapsed = false;
}
} catch(ex) {
toolbar.collapsed = false;
}
toolbar.setAttribute("toolbarname", toolbar.getAttribute("bt-toolbarname"));
var navbar = document.getElementById("nav-bar");
// if (navbar.nextSibling.id != "bt-" + currToolbar + "-toolbar") {
if (navbar.nextSibling != toolbar) {
navbar.parentNode.insertBefore(toolbar, navbar.nextSibling)
}
}
/* Figure out which sidebar applies to the current boom */
/* Note this can be either a boom specific sidebar or a client specific sidebar */
var boomSidebar;
var sidebarmenu = document.getElementById("bt-" + currentBoom + "-sidebar-menu");
if (sidebarmenu) {
boomSidebar = currentBoom;
} else {
/* Might be a client toolbar */
sidebarmenu = document.getElementById("bt-" + boomClient + "-sidebar-menu");
if (sidebarmenu) {
boomSidebar = boomClient;
}
}
/* Disable everything that doesn't correspond to the current toolbar */
/* Hide other sidebars */
for (let i in BrandThunder.clients) {
for (let j in BrandThunder.clients[i].booms) {
if (j != boomToolbar) {
try{
document.getElementById("bt-" + j + "-toolbar").collapsed = true;
document.getElementById("bt-" + j + "-toolbar").removeAttribute("toolbarname");
} catch (ex) {}
}
if (j != boomSidebar) {
try{
document.getElementById("bt-" + j + "-sidebar-menu").hidden = true;
} catch (ex) {}
}
}
if (i != boomClient) {
try{
document.getElementById("bt-" + i + "-toolbar").collapsed = true;
document.getElementById("bt-" + i + "-toolbar").removeAttribute("toolbarname");
} catch (ex) {}
try{
document.getElementById("bt-" + i + "-sidebar-menu").hidden = true;
} catch (ex) {}
}
}
if (sidebarmenu) {
sidebarmenu.hidden = false;
}
if (!document.getElementById("sidebar-box").hidden) {
if (document.getElementById("sidebar-box").getAttribute("src").match("btSidebar.xul")) {
if (boomSidebar) {
toggleSidebar();
toggleSidebar("bt-" + boomSidebar + "-sidebar", true);
} else {
toggleSidebar();
}
}
}
/* Update the search engine to correspond to the current boomClient */
updateSearchEngine(BrandThunder.clients[boomClient]);
var updateUserAgent = true;
try {
updateUserAgent = btPrefBranch.getBoolPref("updateUserAgent");
} catch (ex) {}
if (updateUserAgent) {
prefbranch.setCharPref("general.useragent.extra.brandthunder", "(BT-" + boomClient + ")");
}
}
function uninstall (brandObject, btClientBundle) {
function postUninstall(brandObject, btClientBundle) {
brandObject.utilities.openLink(brandObject, null, "http://brandthunder.com/uninstall.php?&type=" + brandObject.shortName);
var button = promptService.confirmEx(window, btClientBundle.getString("clientName"), btClientBundle.getString("restart.confirm"),
(promptService.BUTTON_TITLE_YES * promptService.BUTTON_POS_0) +
(promptService.BUTTON_TITLE_NO * promptService.BUTTON_POS_1),
null, null, null, null, {});
if (button == 0) {
brandObject.utilities.restartApp();
}
}
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
var em = Components.classes["@mozilla.org/extensions/manager;1"]
.getService(Components.interfaces.nsIExtensionManager);
var name = em.getInstallLocation(brandObject.extensionID).name;
if (name == "winreg-app-global") {
const nsIWindowsRegKey = Components.interfaces.nsIWindowsRegKey;
var key = Components.classes["@mozilla.org/windows-registry-key;1"]
.createInstance(nsIWindowsRegKey);
var rootKey = nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE;
key.create(rootKey, "SOFTWARE\\Mozilla\\Firefox\\Extensions", nsIWindowsRegKey.ACCESS_READ);
var path = key.readStringValue(brandObject.extensionID);
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(path + "\\" + "unins000.exe");
var process = Components.classes["@mozilla.org/process/util;1"]
.createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = [];
process.run(false, args, args.length);
function checkUninstallStatus(process, brandObject, btClientBundle) {
switch (process.exitValue) {
case -1:
window.setTimeout(checkUninstallStatus, 1000, process, brandObject, btClientBundle);
break;
case 1:
return;
case 0:
window.setTimeout(postUninstall, 2500, brandObject, btClientBundle);
key.removeValue(brandObject.extensionID);
break;
}
}
window.setTimeout(checkUninstallStatus, 1000, process, brandObject, btClientBundle);
} else {
var button = promptService.confirmEx(window, btClientBundle.getString("clientName"), btClientBundle.getString("uninstall.confirm"),
(promptService.BUTTON_TITLE_YES * promptService.BUTTON_POS_0) +
(promptService.BUTTON_TITLE_NO * promptService.BUTTON_POS_1),
null, null, null, null, {});
if (button == 0) {
var observerService = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
var em = Components.classes["@mozilla.org/extensions/manager;1"]
.getService(Components.interfaces.nsIExtensionManager);
var name = em.getInstallLocation(brandObject.extensionID).name;
try {
em.uninstallItem(brandObject.extensionID);
observerService.notifyObservers(em.getItemForID(brandObject.extensionID),
"em-action-requested", "item-uninstalled");
} catch(ex) {}
postUninstall(brandObject, btClientBundle);
}
}
}
function firstRun(brandObject, btClientBundle) {
var btClientPrefBranch;
if (brandObject.clientCode) {
btClientPrefBranch = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService)
.getBranch("extensions.brandthunder." + brandObject.clientCode + ".");
} else {
btClientPrefBranch = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService)
.getBranch("extensions.brandthunder." + brandObject.shortName + ".");
}
var validBoom = false;
try {
var currentBoom = btPrefBranch.getCharPref("currentBoom");
for (let i in BrandThunder.clients) {
for (let j in BrandThunder.clients[i].booms) {
if (j == currentBoom) {
validBoom = true;
}
}
}
} catch (ex) {}
if (!validBoom) {
/* currentBoom is not valid */
for (let i in brandObject.booms) {
btPrefBranch.setCharPref("currentBoom", i);
break;
}
}
if (!btClientBundle) {
btClientBundle = document.getElementById("btClientBundle_" + brandObject.shortName);
}
/* If for some reason we didn't get a client bundle, try a boom bundle */
if (!btClientBundle) {
btClientBundle = document.getElementById("btBoomBundle_" + currentBoom);
}
function removeXPIs(brandObject) {
try {
var extdir = em.getInstallLocation(brandObject.extensionID)
.getItemLocation(brandObject.extensionID);
} catch (ex) {
return;
}
var e = extdir.directoryEntries;
while (e.hasMoreElements()) {
var f = e.getNext().QueryInterface(Components.interfaces.nsIFile);
var splitpath = f.path.split(".");
/* Only load XPI files */
if (splitpath[splitpath.length-1] == "xpi") {
try {
f.remove(true);
} catch (ex) {}
}
}
}
function surfCanyonUpgrade(brandObject, btClientBundle){
var upgradeMessage = btClientBundle.getString("upgradeMessage");
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
var state = {};
state.value = true;
promptService.confirmEx(window, btClientBundle.getString("clientName"),
upgradeMessage,
promptService.BUTTON_TITLE_OK,
null,null,null,"Install Surf Canyon on the next restart",state);
if (state.value == false) {
removeXPIs(brandObject);
}
}
var firstrun = true;
try {
firstrun = btClientPrefBranch.getBoolPref("firstrun");
if (firstrun == false) {
/* Check if we are an upgrade */
var upgrade = false;
try {
upgrade = btClientPrefBranch.getBoolPref("upgrade");
if (upgrade) {
/* If our old Yahoo was there, add bing and ask about upgrading */
if (replaceYahoo()) {
addBing(brandObject, true);
upgradeToBing(btClientBundle);
}
try {
var upgradeMessage = btClientBundle.getString("upgradeMessage");
/* check if surf canyon is already installed */
var em = Components.classes["@mozilla.org/extensions/manager;1"]
.getService(Components.interfaces.nsIExtensionManager);
var scinstalled = em.getInstallLocation("{75623d5d-4683-402a-b610-ac4bab767c86}")
if (!scinstalled) {
/* Make sure we have a surf canyon XPI before offering to install it */
try {
var extdir = em.getInstallLocation(brandObject.extensionID)
.getItemLocation(brandObject.extensionID);
} catch (ex) {
return;
}
var haveSurfCanyonXPI = false;
var e = extdir.directoryEntries;
while (e.hasMoreElements()) {
var f = e.getNext().QueryInterface(Components.interfaces.nsIFile);
if (f.leafName == "surfcanyon_sc.xpi") {
haveSurfCanyonXPI = true;
break;
}
}
if (haveSurfCanyonXPI) {
window.setTimeout(surfCanyonUpgrade, 1500, brandObject, btClientBundle);
}
} else {
removeXPIs(brandObject);
}
} catch (ex) {
/* No upgradeMessage specified, so don't display message */
}
btClientPrefBranch.clearUserPref("upgrade");
}
} catch (ex) {}
return;
}
} catch (ex) {}
btClientPrefBranch.setBoolPref("firstrun",false);
function firstRunNotifications(brandObject) {
function askAboutHomepage(event) {
/* Only ask about home page if the notification happens on one of our pages */
if (brandObject.welcomePage) {
if (!(content.document.location.href.match(brandObject.welcomePage))) {
return;
}
} else if (brandObject.startPage) {
if (content.document.location.href != brandObject.startPage) {
return;
}
} else {
event.target.removeEventListener("load", askAboutHomepage, false);
return;
}
event.target.removeEventListener("load", askAboutHomepage, false);
function yes() {
var prefbranch=Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
var homePage;
if (typeof(brandObject.homePage) == "object") {
homePage = brandObject.homePage[currentBoom];
} else {
homePage = brandObject.homePage;
}
prefbranch.setCharPref("browser.startup.homepage", homePage);
}
var nbox_buttons = [
{
label: "Yes",
accessKey: "Y",
callback: yes,
popup: null
},
{
label: "No",
accessKey: "N",
callback: function() {},
popup: null
}
]
var nbox = gBrowser.getNotificationBox();
if (brandObject.homePage) {
try {
var homepageQuestion = btClientBundle.getString("homepageQuestion");
nbox.appendNotification(homepageQuestion, "brandthunder",
"chrome://" + brandObject.packageName + "/skin/favicon.png",
nbox.PRIORITY_INFO_HIGH, nbox_buttons);
} catch (ex) {}
}
if (content.document.location.href.match("overlay")) {
if (!brandObject.utilities.isDefaultSearchEngineBT(brandObject)) {
var search = content.document.getElementById("search");
if (search) {
search.style.display = "block";
} else {
/* If we don't have a search block, even if we're AMO, do the switch */
brandObject.utilities.setDefaultSearchEngine(brandObject, true);
}
}
}
}
/* If we have a start page, add it */
if (brandObject.startPage) {
gBrowser.selectedTab = gBrowser.addTab(brandObject.startPage);
}
/* If we have a welcome page, add it */
if (brandObject.welcomePage) {
var welcomePage = brandObject.welcomePage;
if (brandObject.firstrun || (!brandObject.utilities.isDefaultSearchEngineBT(brandObject) && AMO)) {
welcomePage += "?overlay";
}
gBrowser.selectedTab = gBrowser.addTab(welcomePage);
}
gBrowser.selectedTab.addEventListener("load", askAboutHomepage, false);
if (brandObject.firstRunSidebar) {
toggleSidebar(brandObject.firstRunSidebar, true);
}
}
/* Delay startup notifications for a 1.5 seconds */
window.setTimeout(firstRunNotifications, 1500, brandObject);
if (brandObject.bookmarks) {
for (let i in brandObject.bookmarks) {
if (typeof(brandObject.bookmarks[i]) == "object") {
var bookmarks = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"]
.getService(Components.interfaces.nsINavBookmarksService);
var folder = bookmarks.createFolder(bookmarks.bookmarksMenuFolder, i, -1);
for (let j in brandObject.bookmarks[i]) {
brandObject.utilities.addBookmark(j, brandObject.bookmarks[i][j], folder);
}
} else {
brandObject.utilities.addBookmark(i, brandObject.bookmarks[i]);
}
}
}
brandObject.utilities.addSearchEngine(brandObject);
if (!AMO) {
brandObject.utilities.setDefaultSearchEngine(brandObject, false);
}
}
brandObject.utilities.openLink = openLink;
brandObject.utilities.restartApp = restartApp;
brandObject.utilities.addSearchEngine = addSearchEngine;
brandObject.utilities.setDefaultSearchEngine = setDefaultSearchEngine;
brandObject.utilities.isDefaultSearchEngineBT = isDefaultSearchEngineBT;
brandObject.utilities.addBookmark = addBookmark;
brandObject.utilities.uninstall = uninstall;
brandObject.utilities.firstRun = firstRun;
brandObject.utilities.switchBoom = switchBoom;
brandObject.utilities.toggleTheme = toggleTheme;
brandObject.utilities.updateKeywordSearch = updateKeywordSearch;
try {
Components.utils.import("resource://gre/modules/JSON.jsm", brandObject.utilities);
brandObject.utilities.JSON.stringify = brandObject.utilities.JSON.toString;
brandObject.utilities.JSON.parse = brandObject.utilities.JSON.fromString;
} catch (ex) {
/* Firefox 3.1 has native JSON support */
brandObject.utilities.JSON = JSON;
}
try {
Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", brandObject.utilities);
} catch (ex) {
}
var rdfs = Components.classes["@mozilla.org/rdf/rdf-service;1"]
.getService(Components.interfaces.nsIRDFService);
var extensionDS= Components.classes["@mozilla.org/extensions/manager;1"]
.getService(Components.interfaces.nsIExtensionManager).datasource;
var extension = rdfs.GetResource("urn:mozilla:item:" + brandObject.extensionID);
var arc = rdfs.GetResource("http://www.mozilla.org/2004/em-rdf#updateURL");
var updateURL = extensionDS.GetTarget(extension, arc, true);
if (updateURL) {
AMO = false;
} else {
AMO = true;
}
/* So other clients won't call our BrandThunder.initialize */
delete BrandThunder.initialize;
}